package com.zyg.DataSourcePool;
	//模拟数据库连接池，但是不具备实际开发意义

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collections;
import java.util.LinkedList;

import com.zyg.tools.DBUtil;

public class DataSourcePoolDemo {
	
	//创建一个存放链接的池子,将其转换成一个线程安全的类
	private static LinkedList<Connection> pool = new LinkedList<Connection>();
	static {
		//产生是个链接，依次放入连接池
		for (int i = 0; i < 10; i++) {
			try {
				Connection connection = DBUtil.getConnection();
				pool.add(connection);
			} catch (SQLException e) {
				throw new ExceptionInInitializerError("初始化数据库链接失败，请检查配置文件");
			}
		}
		
	}
	
	public Connection getConnectionPool() {
		Connection connection = null;
		if (pool.size()>0) {
			//取出池子中的一个连接同时从池子里面移除，不让其他人用
			connection = pool.removeFirst();
			return connection;
		}else {
			//连接池中连接用完的话可以提示用户。。。。。并新建一个连接
			throw new RuntimeException("服务器忙，。。。。。");
		}
	}
	
	public void relase (Connection conn) {
		//释放资源，此时等同于将之前的连接重新添加到连接池最后面
		pool.addLast(conn);
	}
	public static void main(String[] args) {
		Connection connection = new DataSourcePoolDemo().getConnectionPool();
		
	}
}
